package reflecting;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class Domain {

	public static void main(String[] args) {
		
		
		List<String> stringList = new ArrayList<>();
		List<Integer> intList  =new ArrayList<>(); 
//		System.out.println(stringList.getClass() == intList.getClass());
		stringList.add("aa");
		stringList.add("bb");
		Class cls = stringList.getClass();//获取类类型
		try {
			Method method = cls.getMethod("add",Object.class);//反射获取add方法
			method.invoke(stringList, 33);//调用add方法添加int类型值
			System.out.println("size = " + stringList.size());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		
		
		
		
		
		
//		System.out.println("===================方法信息===================");
//		ClassMessageGetter.getMethodMessage(new ChildActivity(0));
//		System.out.println("===================成员信息===================");
//		ClassMessageGetter.getFieldMessage(new ChildActivity(0));
//		System.out.println("===================构造函数信息===================");
//		ClassMessageGetter.getConstructorMessage(new ChildActivity(0));
//		System.out.println("===================修改成员变量及调用方法信息===================");
//		ClassMessageGetter.reflectionProcess();
	}
	
//	public static void main(String[] args) {
//		// 一：获取类的类类型（class type）,三种方式
//		// 1.XX.class
//		Class cls1 = Car.class;
//		// 2.实例对象.getClass()
//		Car car = new Car();
//		Class cls2 = car.getClass();
//		// 3.Class.forName("类的完整路径")
//		Class cls3 = null;
//		try {
//			cls3 = Class.forName("entity.Word");
//		} catch (ClassNotFoundException e) {
//			e.printStackTrace();
//		}
//
//		// 这几种获取方式获取到的类类型是同一个
//		System.out.println("cls1 == cls2 = " + (cls1 == cls2));
//		System.out.println("cls1 == cls3 = " + (cls1 == cls3));
//		System.out.println("cls2 == cls3 = " + (cls2 == cls3));
////
//		//通过类的类类型取得实例对象（需要无参构造函数）
//		try {
//			Car carInstance = (Car) cls1.newInstance();
//			carInstance.start();
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
////		
//	}

}
